package net.virtuemed.jt808.vo.req;

import io.netty.buffer.ByteBuf;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import net.virtuemed.jt808.vo.DataPacket;

import java.nio.charset.StandardCharsets;

/**
 *  终端注册包
 * @Description  RegisterMsg
 * @Author guoyb
 * @Date   2023/10/13 13:53
 */
@Data
@Slf4j
public class RegisterMsg extends DataPacket {

    /**
     * 省域ID(WORD),设备安装车辆所在的省域，省域ID采用GB/T2260中规定的行政区划代码6位中前两位
     */
    private short provinceId;//省域ID 2字节

    /**
     * 市县域ID(WORD) 设备安装车辆所在的市域或县域,市县域ID采用GB/T2260中规定的行 政区划代码6位中后四位
     */
    private short cityId;//市县ID 2字节

    private String manufacturerId;//制造商ID 5字节

    /**
     * 终端型号(BYTE[8]) 八个字节， 此终端型号 由制造商自行定义 位数不足八位的，补空格。
     */
    private String terminalType;//终端型号 8字节

    /**
     * 终端ID(BYTE[7]) 七个字节， 由大写字母 和数字组成，由制造商自行定义
     */
    private String terminalId;//终端ID 7字节

    /**
     *
     * 车牌颜色(BYTE) 车牌颜色，按照 JT/T415-2006 的 5.4.12 未上牌时，取值为0<br>
     * 0===未上车牌<br>
     * 1===蓝色<br>
     * 2===黄色<br>
     * 3===黑色<br>
     * 4===白色<br>
     * 9===其他
     */
    private int licensePlateColor;//车牌颜色 1字节

    private String licensePlate;//车牌号 剩余字节

    public RegisterMsg(ByteBuf byteBuf) {
        super(byteBuf);
    }

    @Override
    public void parseBody() {
        log.info("解析消息体----终端注册包");
        ByteBuf bb = this.payload;
        this.setProvinceId(bb.readShort());
        this.setCityId(bb.readShort());
        this.setManufacturerId(readString(5));
        this.setTerminalType(readString(20));
        this.setTerminalId(readString(7));
// bo TODO 解析有问题
        
        this.setLicensePlateColor(bb.readByte());
        this.setLicensePlate(readString(bb.readableBytes()));
    }
}
